package com.yulinlin.core.wrapper;

import com.yulinlin.core.lambda.LambdaPropertyFunction;

import java.lang.reflect.Field;
import java.util.Collection;
import java.util.List;
import java.util.Map;

public interface IParamsWrapper {


    /**
     * 添加一个参数
     * @param val
     * @return 占位符号
     */
    String push(Object val);

    List<String> pushList(Collection<?> params);

    //得到参数map
    Map<String,Object> getParams();

    void put(String key,Object value);

    void putAll(Map<String,Object> map);

    /**
     * 返回字段得列名
     * @param f
     * @return
     */
    String fieldToColumnName(Field f);

    String fieldToColumnName(String f);

    /**
     * 返回字段列明
     * @param name
     * @return
     */
    String lambdaMethodNameToColumnName(LambdaPropertyFunction<?> name);

    /**
     * 注册一个别名
     * @param key
     * @param value
     * @return
     */
    void alias(String key,String value);

    /**
     * 注册别名
     * @param clazz
     */
    void alias(Class clazz);
}
